home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / Projects / Examples / More Examples / Converting freqs to velocities < prev    next >
Lisp/Scheme  |  1998-10-26  |  1KB  |  51 lines

  1. Let's say you have frequencies 200, 330, 800, 960 and 2000 and you
  2. want to use them to build up wave forms for velocity control.
  3. How would you do that? 
  4.  
  5. First you must convert the frequencies in ratios, this is done by
  6. mapcaring get-ratio function with list of relative frequency values
  7. as in below. Next these values are supplied to the gen-fourier as
  8. frequency list parameter. See the documentation of gen-fourier for
  9. more details of the amplitude and phase parameters. 
  10.  
  11. This generates the sum frequencies 1 33/20 4 24/5 10 with 
  12. decreasing amplitudes 1 0.5 0.25 0.1 0.05 with zero phase for
  13. all frequencies.
  14.  
  15. (setq source-vector
  16.   (gen-fourier 
  17.      (mapcar #'(lambda (x) (get-ratio x :integer))
  18.              '(200/200 330/200 800/200 960/200 2000/200))
  19.      '(1 0.5 0.25 0.1 0.05)
  20.      '(0)
  21.      32))
  22.  
  23. The source-vector above is 32 elements long. You can adjust this
  24. to match the number of elements depending how much symbols you
  25. are playing.
  26.  
  27. To use the source-vector as velocities, lets generate 32 random symbols
  28. with gen-random and then let the 32 values of the source vector control
  29. the velocities of the symbols.
  30.  
  31. (def-section sect-a
  32.    default
  33.       zone '(2/1)
  34.       tonality (activate-tonality (frequency-map '(200/200 330/200 800/200 960/200 2000/200) 1 '(g# 3)))
  35.       length '(1/8)
  36.    piano
  37.       symbol (gen-random 0.5 32 '(a b c d e f g))
  38.       velocity (vector-round 0 127 source-vector)
  39. )
  40.  
  41. (def-tempo 120)
  42.  
  43. (midiport :printer)
  44.  
  45. (play-file-p "freqtovel"
  46.    piano '(sect-a)
  47. )
  48.  
  49.  
  50.  
  51.